import React, { useEffect, useState } from 'react'; import { Text } from '../components/Inputs'; import CodeRenderer from '../components/renderers/Code' import PasteInfo from '../components/PasteInfo'; import PasswordModal from '../components/modals/PasswordModal' import RenderDispatch from '../components/renderers/RenderDispatch' import {Watermark} from "../components/Watermark"; import { useRouter } from 'next/router' import resolvePaste from "../http/resolvePaste"; import NextHead from "../components/NextHead"; export async function getServerSideProps(ctx) { const data = await resolvePaste(ctx.params.hash) return { props: { ...data } } } const ViewPaste = ({data, unauthorized, error}) => { const router = useRouter() const { hash } = router.query const [theme, setTheme] = useState('atom'); const [isRenderMode, setIsRenderMode] = useState(false); const [enteredPass, setEnteredPass] = useState(''); const [correctPass, setCorrectPass] = useState(!unauthorized); const [clientData, setClientData] = useState(data) const {content, language, expiry, title} = clientData; const getWithPassword = (password, errorCallback) => { resolvePaste(hash, password) .then(resp => { setCorrectPass(true) setClientData(resp.data) }) .catch(e => errorCallback(e.response.data)) } useEffect(() => { setIsRenderMode(language === 'latex' || language === 'markdown') }, [language]) function getDisplay() { return isRenderMode ? : } return (
{!error && } setEnteredPass(e.target.value)} validateCallback={getWithPassword} /> {getDisplay()} setIsRenderMode(!isRenderMode)} isRenderMode={isRenderMode} onChange={(e) => setTheme(e.target.value)} err={unauthorized ? '' : error} />
); } export default ViewPaste